package pers.litao.bit.order.service;

import com.baomidou.mybatisplus.extension.service.IService;
import pers.litao.bit.commons.entities.order.OrderEntity;
import pers.litao.bit.commons.utils.LoginUserInfo;
import pers.litao.bit.commons.utils.R;
import pers.litao.bit.commons.vo.order.OrderVo;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * @author 李涛
 * @date 2020-12-05 13:41
 */
public interface OrderService extends IService<OrderEntity> {
    /**
     * 保存订单
     *
     * @param orderEntity
     * @return
     */
    R saveOrder(OrderEntity orderEntity,LoginUserInfo loginUserInfo);

    /**
     * 获取零售商订单列表
     *
     * @param current
     * @return
     */
    R getOrderList(Long current,LoginUserInfo loginUserInfo);

    /**
     * 获取供应商订单列表
     *
     * @param current
     * @return
     */
    R getSupplierOrder(Long current, Map<String,Long> map, LoginUserInfo loginUserInfo);

    /**
     * 合并配送订单
     *
     * @param orderVos
     * @return
     */
    R distributionOrder(List<OrderVo> orderVos, LoginUserInfo loginUserInfo);

    /**
     * 获取订单订单列表（根据IDs）
     *
     * @param ids
     * @return
     */

    R getListByIds(List<Long> ids,LoginUserInfo loginUserInfo);
    /**
     * 订单完成
     *
     * @param ids
     * @return
     */
    R orderComplete(List<Long> ids,LoginUserInfo loginUserInfo);

    /**
     * 取消订单
     *
     * @param id
     * @return
     */
    R cancelOrder(Long id,LoginUserInfo loginUserInfo);

    /**
     * 设置零售价
     *
     * @param id
     * @param price
     * @return
     */
    R setRetailPrice(Long id, BigDecimal price, LoginUserInfo loginUserInfo);

    /**
     * 设置销售数量
     *
     * @param id
     * @param num
     * @return
     */
    R setNum(Long id, Integer num, LoginUserInfo loginUserInfo);

    /**
     * 获取供应商首页三个卡片数据
     *
     * @return
     */
    R getCard(LoginUserInfo loginUserInfo);

    /**
     * 获取昨日成交和历史成交
     *
     * @return
     */
    R getOrderCount(LoginUserInfo loginUserInfo);

    /**
     * 零售商盈亏统计
     *
     * @param loginUserInfo
     * @return
     */
    R profitAndLoss(LoginUserInfo loginUserInfo);

    /**
     * 零售商销售统计-漏斗图
     *
     * @param loginUserInfo
     * @return
     */
    R funnel(LoginUserInfo loginUserInfo);

    /**
     * 供应商统计一周订单量
     *
     * @param loginUserInfo
     * @return
     */
    R getSupplyWeekOrders(LoginUserInfo loginUserInfo);

    /**
     * 供应商获取一周销售额
     *
     * @param loginUserInfo
     * @return
     */
    R getSupplyWeekMoney(LoginUserInfo loginUserInfo);

    /**
     * 供应商首页统计图
     *
     * @param loginUserInfo
     * @return
     */
    R getSupplyMain(LoginUserInfo loginUserInfo);
}
